package cn.peng.stu4teach.pages.home.adapter;

import android.view.ViewGroup;
import android.widget.ImageView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.youth.banner.adapter.BannerAdapter;

import java.util.List;

import cn.peng.stu4teach.util.GlideUtil;

/**
 * banner 使用的适配器。
 * BannerAdapter 继承自 RecyclerView.Adapter
 */
public class ImgBannerAdapter extends BannerAdapter<String, ImgBannerAdapter.BannerViewHolder> {

    public ImgBannerAdapter (List<String> datas) {
        super(datas);
    }

    /**
     * 创建 holder。（ holder中储存着视图对象 ）
     */
    @Override
    public BannerViewHolder onCreateHolder (ViewGroup parent, int viewType) {
        ImageView imageView = new ImageView(parent.getContext());
        //注意，必须设置为match_parent，这个是 viewpager2 强制要求的
        imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        return new BannerViewHolder(imageView);
    }

    /**
     * 将数据绑定到视图中（填充要呈现的数据）
     */
    @Override
    public void onBindView (BannerViewHolder holder, String data, int position, int size) {
        if (null == holder.imageView) {
            return;
        }

        GlideUtil.instance().load(holder.imageView, data);
    }

    /**
     * Rv 使用 ViewHolder 是为了复用，提高渲染效率.
     * (视图复用：类比——教室内的凳子是视图容器，学生坐在该凳子上，下课后，人走，凳子还在；下节课其他班学生继续使用该凳子)
     */
    class BannerViewHolder extends RecyclerView.ViewHolder {
        ImageView imageView;

        public BannerViewHolder (@NonNull ImageView view) {
            super(view);
            this.imageView = view;
        }
    }
}
